{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "65621e5f-9f7d-43d3-a2d8-7467fc801479",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T09:10:13.367266Z",
     "iopub.status.busy": "2023-01-09T09:10:13.366864Z",
     "iopub.status.idle": "2023-01-09T09:10:13.371817Z",
     "shell.execute_reply": "2023-01-09T09:10:13.371107Z",
     "shell.execute_reply.started": "2023-01-09T09:10:13.367239Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import numexpr as ne\n",
    "\n",
    "num = 10\n",
    "a = np.random.rand(num, num)\n",
    "b = np.random.rand(num, num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "d5f75841-041b-47c1-b4ba-93df2be1c3ff",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T09:10:14.369137Z",
     "iopub.status.busy": "2023-01-09T09:10:14.368793Z",
     "iopub.status.idle": "2023-01-09T09:10:21.058119Z",
     "shell.execute_reply": "2023-01-09T09:10:21.057676Z",
     "shell.execute_reply.started": "2023-01-09T09:10:14.369109Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8.24 µs ± 16.5 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "timeit 2*a + b**10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c6f363d7-968c-4b61-9bc4-430f5bf96cda",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T09:10:23.366809Z",
     "iopub.status.busy": "2023-01-09T09:10:23.366180Z",
     "iopub.status.idle": "2023-01-09T09:10:30.091188Z",
     "shell.execute_reply": "2023-01-09T09:10:30.090639Z",
     "shell.execute_reply.started": "2023-01-09T09:10:23.366754Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8.22 µs ± 86.7 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "timeit ne.evaluate(\"2*a + b**10\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "f73a04a3-f2bc-47fc-b407-575d7b64132d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T09:09:47.736082Z",
     "iopub.status.busy": "2023-01-09T09:09:47.735692Z",
     "iopub.status.idle": "2023-01-09T09:09:47.751662Z",
     "shell.execute_reply": "2023-01-09T09:09:47.750983Z",
     "shell.execute_reply.started": "2023-01-09T09:09:47.736041Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "numpy_time = []\n",
    "numexpr_time = []\n",
    "for num in [10, 100, 1000, 10000, 20000, 50000, 100000]:\n",
    "    a = np.random.rand(num).astype(np.bool8)\n",
    "    b = np.random.rand(num).astype(np.bool8)\n",
    "    \n",
    "    start_time = time.time()\n",
    "    resa = a | b\n",
    "    numpy_time.append(time.time() - start_time)\n",
    "    \n",
    "    start_time = time.time()\n",
    "    resb = ne.evaluate(\"a | b\")\n",
    "    numexpr_time.append(time.time() - start_time)\n",
    "    \n",
    "    print(np.allclose(resa, resb))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "23d06cca-80ad-43d9-ad06-8cea207cb421",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T09:09:48.615397Z",
     "iopub.status.busy": "2023-01-09T09:09:48.614974Z",
     "iopub.status.idle": "2023-01-09T09:09:48.754281Z",
     "shell.execute_reply": "2023-01-09T09:09:48.753830Z",
     "shell.execute_reply.started": "2023-01-09T09:09:48.615348Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "%pylab is deprecated, use %matplotlib inline and import the required libraries.\n",
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Time')"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAFtCAYAAAATVf6JAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABb5ElEQVR4nO3deXyV9Zn//9eVjT0Je8CAgFBEUVEUi1ikWirTafu109pa7UK1i/3WaqdVK50uFjtKrVVqbZ2vDoN1aoVf2xm62OIMbV1YBDfctaCAILuQRAhkvX5/3PdJ7nNyTjaS3CfJ+/l4nEfOue/rfO7PuRPIlc9q7o6IiIiIJMuJuwIiIiIi2UhJkoiIiEgaSpJERERE0lCSJCIiIpKGkiQRERGRNJQkiYiIiKShJElEREQkDSVJIiIiImnkxV0BaZ6ZGTAaeCfuuoiIiHRDg4Cd3o7Vs5UkZb/RwI64KyEiItKNlQJvtfVNSpKy3zsA27dvp7CwMO66iIiIdBsVFRWMGTMG2tkboySpmygsLFSSJCIi0oU0cFtEREQkjaxIkszsK2a21cyOmtl6M5vRQvzFZvZqGP+CmX0g5byZ2UIz22VmR8xslZlNSokZYmYPmFmFmZWZ2RIzGxg5P8fMfheWcdjMNprZZZ1RFxEREck+sSdJZvYJ4Hbg+8AZwHPAw2Y2IkP8OcCDwBLgdGAFsMLMpkbCrgeuBq4EzgYOh2X2jcQ8AJwMzAU+CMwG7omcPwd4HvgocCqwFLjfzD7YCXURERGRLGPtmBHXsRUwWw886e5Xha9zgO3AT919UZr45cAAd48mK08AG939ynDK/E7gx+5+W3i+CNgDzHf3ZWY2BXgZOMvdnwpj5gF/AkrdfWeGuj4E7HH3yzuqLq24P4VAeXl5ecYxSe5ObW0tdXV1LRUnWSY3N5e8vDyCHxUREelIFRUVFBUVARS5e0Vb3x/rwG0zKwCmA7ckjrl7vZmtAmZmeNtMgpanqIeBi8Ln44ESYFWkzPIwGZsJLAu/liUSpNAqoJ6gtee/M1y7CHilg+uSxMz6AH0ihwZlqAsA1dXV7Nq1i8rKyubCJIv179+fUaNGUVBQEHdVREQkIu7ZbcOAXIKWlag9wIkZ3lOSIb4kcp5WxOyNnnT3WjM7EIlJYmYfB84CvtTBdUm1APhehnNJ6uvr2bJlC7m5uYwePZqCggK1SHQj7k51dTX79u1jy5YtTJo0iZyc2HvARUQkFHeS1C2Y2XsJxiR9wd1f6uTL3UJy69QgMiwmWV1dTX19PWPGjKF///6dXC3pDP369SM/P59t27ZRXV1N374aqiYiki3i/rN1P1AHjEw5PhLYneE9u1uI3x051lxM0sBwM8sDhqRe18zOA/4A/LO7398JdUni7lXuXpF40IoFsNT60L3p+ycikp1i/d/Z3auBp4ELEsfCgdsXAOsyvG1dND40NxK/hSABiZZZSDDWKBGzDig2s+mRMs4nuB/rI++bAzwEfNPdozPfOrIuIiIikoWyobvtduAXZvYUsAH4GjCAoHsLM7sfeMvdF4TxPwEeNbNvECQwlwBnAl8EcHc3s8XAt81sE0GichPBLLMVYcwrZrYSuNfMrgTygbuAZYmZbWEX2x/D6/3WzBJjiKrd/UBH1UVERKRXO7QPdmyA7Rugrhrm3dLye7pI7O387r4cuBZYCGwEpgHz3D0x2HksMCoSvxa4lCAReQ74GHCRu78YKfZW4KcE6x49CQwMyzwaibkMeBX4C8HU/9VhmQmfBfoTDKTeFXn8VyfUpdeZP38+ZsaiRcmrPKxYsUKDz0VEeqq6Wtj1HGy4F377BfjJaXDbRFh2KaxZDE/fF8RkidjXSZLmNbdO0tGjR9myZQvjx4/vdgN+58+fz/Lly+nbty9vvPEGgwcPBoIk6SMf+Qi96eeyO38fRUSadfjtxlaiHU/CW89AzeGUIIPhJ8KYs2DM2TD1Y5DfMf8XHus6SbG3JEnv9b73vY+SkhJuuSV90+qNN97ItGnTko4tXryYcePGNbyeP38+F110ETfffDMjR46kuLiYhQsXUltby3XXXceQIUMoLS1l6dKlDe/ZunUrZsayZcs455xz6Nu3L1OnTuXRRx8Fgqn5EydO5Lbbbku69saNGzEzNm/e3DE3QESkJ6mvg90vwJNL4L+vhDvPgB9NgAcvgdW3w9bHgwSpTxGccAHMWQCf+i+4YRt85Qn48E/h9E91WILUEbJhTJJ0IHfnSE3Xr7zdLz+3zd1kubm53HzzzVx66aVcffXVlJaWtuvaf/3rXyktLeWxxx5jzZo1XHHFFaxdu5bZs2ezfv16li9fzpe+9CXmzp2bdI3rrruOxYsXc9JJJ3H77bfzoQ99iC1btjB06FAuv/xyli5dyrXXXtsQv3TpUmbPns3EiRPbVU8RkR6l8gDseKqxpeitp6H6UNO4YZODVqLSGTBmRvC6m8zqVZLUwxypqeOk7z7c5dd9eeGF9C9o+4/TRz7yEaZNm8b3vvc9lixZ0q5rDxkyhDvvvJOcnBwmT57MrbfeSmVlJd/61rcAWLBgAYsWLWL16tVccsklDe+76qqr+OhHPwrA3XffzcqVK1myZAnXX3898+fP57vf/S4bNmxgxowZ1NTU8Ktf/apJ65KISK9QXw/7Xm1MiLZvgLc3NY0rGASl0xsTouOmQ/8hXV/fDqIkSWL3wx/+kPPPPz+p1aYtTj755KS1hkaOHMnUqY17DOfm5jJ06FD27k1aZJ2ZMxt3vsnLy+PMM8/klVeCXWdGjx7NP/7jP/If//EfzJgxgz/84Q9UVVVx8cUXt6uOIiLdypEyeOupxoToraehKs2QnqETGxOiMTOCsUU5uV1e3c6iJKmH6Zefy8sLL4zluu01e/ZsLrzwQhYsWMD8+fMbjufk5DQZwF1TU9Pk/fn5+UmvzSztsfr6+jbV6/Of/zyf/vSnueOOO1i6dCmf+MQntLK5iPQ89fWw/+/JA6z3vdo0Ln8AHHdGMLh6zAwoPatbtxK1hpKkHsbM2tXtFbdFixYxbdo0Jk+e3HBs+PDh7N69G3dvGO+0cePGDrvmE088wezZswGora3l6aef5qqrrmo4/4EPfIABAwY0dMU99thjHXZtEZHYHK0IW4meDBKjHU/C0fKmcUMmhK1E4XiiESdBbvf7/XIsetenlax1yimncNlll3HnnXc2HJszZw779u3j1ltv5WMf+xgrV67kz3/+c5OlENrrZz/7GZMmTWLKlCnccccdHDx4kMsvv7zhfG5uLvPnz2fBggVMmjQpqXtORKRbcIe3N4ctRBuCxGjvy0DKMiv5/WH0GY0JUelZMHB4LFXOJkqSJGssXLiQ5cuXN7yeMmUKP//5z7n55pu56aab+OhHP8q1117LPfek2yGm7RYtWsSiRYvYuHEjEydO5Pe//z3Dhg1Lirniiiu4+eab+dznPtch1xQR6VRVh4LxQ9GusyMHm8YVHx92mYUtRSOnQm5+07heTotJZrmeuphknLZu3cr48eN59tlnm6zDlOrxxx/nggsuYPv27YwcmbpPccfQ91FE2sUdDrwRJELb14etRC+Bp4y/zOsLo08PWocSidGgzvn/LNsc62KSakkSSaOqqop9+/Zx4403cvHFF3dagiQi0mrVh2Hns40J0Y4noXJ/07iiMWFCdHbYSnQK5BV0fX17ACVJImk8+OCDXHHFFUybNo37778/7uqISG/jDge3hq1E4Xii3S+CpywWnFsAo6Y1TsEvnQGFo9KVKO2gJEl6nXHjxrW4N9z8+fOTliMQEelUNUfCVqINjYnR4b1N4waNTk6IRp0KeX26vr69hJIkERGRruQO5duTE6Ldz0N9bXJcTj6MOq1xTaIxM6Cofds3SfsoSRIREelMNUdh13PJW3oc2t00bmBJ8h5no6Zl1WavvZGSJBERkY5U/lZyQrT7eairTo7JyYOSU5K39CgaA23cKFw6l5IkERGR9qqtgl3PJ69LVPFW07gBwxvXJBpzdtBKVKBtjrKdkiQREZHWqtiVnBDt3Ah1VckxlgsjT07e42zwOLUSdUNKkkRERNKpqwm6yhJ7nG3fEAy4TtVvSOOaRKUzgk1gCwZ0fX2lwylJEhERATi0N7LH2YZgSn7t0eQYy4ERJycPsB4yQa1EPZSSJInF/Pnz+cUvfsEtt9zCDTfc0HB8xYoVfOQjH2lxHaNjZRn+Q3vwwQe55JJLOvXaIpIF6mphz4uRLT02QNm2pnH9BgfdZYnxRMdNhz6Dur6+EgslSRKbvn378sMf/pAvfelLDB48uMuvv3TpUubNm5d0rLi4uNOu5+7U1dWRl6d/diJd7vD+SCvRk7DzGaipTAkyGDGlcU2iMWfD0IlqJerFcuKugPRe73vf+ygpKeGWW25Je/7GG29ssgHt4sWLGTduXMPr+fPnc9FFF3HzzTczcuRIiouLWbhwIbW1tVx33XUMGTKE0tJSli5d2qT84uJiSkpKkh6JDWYvv/xyTj31VKqqggGZ1dXVnH766XzmM58Bgk1yzYxly5Zxzjnn0LdvX6ZOncqjjz7aUP4jjzyCmfHnP/+Z6dOn06dPH1avXn0st0xEWqOuNphx9uS/w399Ce48HX50Aiz7JKy+A7atDhKkPkVwwgUwZwF8+r/hhm3wf9fBh++E0z8FwyYpQerl9CdtT+Oe5q+jLpDfv83/meTm5nLzzTdz6aWXcvXVV1Na2r6VZP/6179SWlrKY489xpo1a7jiiitYu3Yts2fPZv369SxfvpwvfelLzJ07t9XXuPPOOznttNO44YYbuOOOO/iXf/kXysrKuOuuu5LirrvuOhYvXsxJJ53E7bffzoc+9CG2bNnC0KFDG2JuuOEGbrvtNiZMmBBLi5lIj1d5IHmPs7eegepDTeOGTW6cgl86A4a9C3LUViCZKUnqaWoq4ebRXX/db+1s12yOj3zkI0ybNo3vfe97LFmypF2XHjJkCHfeeSc5OTlMnjyZW2+9lcrKSr71rW8BsGDBAhYtWsTq1auTxht98pOfJDc3N6msl19+mbFjxzJw4EB++ctfct555zFo0CAWL17M3/72NwoLC5Pir7rqKj760Y8CcPfdd7Ny5UqWLFnC9ddf3xCzcOFC5s6d267PJiIp6utg36vJW3q8valpXMEgKD2zcY+z0unB+CKRNog9STKzrwDXASXAc8BX3X1DM/EXAzcB44BNwDfd/U+R8wZ8H/gCUAysAb7s7psiMUOAnwIfAuqB3wLXuPuh8Hxf4N+A6cAU4I/uflFKPe4DPpumii+7+8lhzI3A91LOv+buJ2b6fL3RD3/4Q84//3yuvfbadr3/5JNPJify1+DIkSOZOnVqw+vc3FyGDh3K3r3Jm0XecccdvO9970s6Nnp0Y4I5c+ZMrr32Wm666Sa++c1vcu655za59syZMxue5+XlceaZZ/LKK68kxZx55pnt+lwiAhw5CDueDscSrQ+eV7/TNG7opOQ9zoafCDm5TeNE2iDWJMnMPgHcDlwJrAe+BjxsZpPdvcn2x2Z2DvAgsAD4I3ApsMLMznD3F8Ow64GrCRKYLQQJ1cNmdpK7J+ZyPgCMAuYC+cBS4J6wPIBc4AhwJ/DRDNW/Brgh8jqPIMn7dUrcS0D0N3HKDoYdLL9/0KrT1fLbv3Ls7NmzufDCC1mwYAHz589vOJ6Tk9NklltNTU3TS+fnJ702s7TH6uvrk46VlJQwceLEjPWqr69nzZo15Obmsnnz5tZ+nCYGDNB6KSKtUl8P+//emBBtfxL2v9Y0rmBgsBZRYgp+6VnQf0jX11d6vLhbkr4O3OvuSwHM7ErgH4HLgUVp4q8BVrr7j8LX3zGzucBVwJVhK9LXgB+4++/CMj8D7AEuApaZ2RRgHnCWuz8VxnwV+JOZXevuO939MPDl8NwsghapJO5eDpQnXpvZRcBggoQrqtbd0+xk2EnMuuUiZosWLWLatGlMnjy54djw4cPZvXs37t4wZX/jxo1dVqcf/ehHvPrqqzz66KNceOGFLF26lM997nNJMU888QSzZ88GoLa2lqeffpqrrrqqy+oo0q0drYC3nmrc4+ytp+BoedO4IROSt/QYcZJaiaRLxJYkmVkBQXdWw9Qmd683s1XAzAxvm0nQ8hT1MEECBDCeoNtuVaTMcjNbH753Wfi1LJEghVYRdLudDfx3Oz/SFcAqd09daGOSme0EjgLrgAXu/mamQsysD9AncqhXLMhxyimncNlll3HnnXc2HJszZw779u3j1ltv5WMf+xgrV67kz3/+c5NxQe1VVlbG7t3J+eugQYMYMGAAzz77LN/97nf5zW9+w6xZs7j99tu55pprOO+885gwYUJD/M9+9jMmTZrElClTuOOOOzh48CCXX355h9RPpEdxh/2bkrf02PsKkLImWn5/GH1GZID1WTBgWCxVFomzJWkYQbfWnpTje4BMY3ZKMsSXRM7Tipikrjx3rzWzA5GYNjGz0cA/0Nhdl7AemA+8RtC99z3gcTOb6u5pOtWBoCsxdRxTr7Bw4UKWL1/e8HrKlCn8/Oc/5+abb+amm27iox/9KNdeey333HNPh1wvtVUI4JZbbuFrX/san/rUp5g/fz4f+tCHAPjiF7/IQw89xKc//Wkee+yxhvhFixaxaNEiNm7cyMSJE/n973/PsGH6D12Eqnfgracbt/TY8WQwvihV8fGNaxKVngUjp0Ju3J0cIgH9JHaMzwJlwIroQXf/c+Tl82GL1jbg40CmqVy3kNxaNgjY0VEVzRb33Xdfk2Pjxo1rWJco4corr+TKK69MOpaYtZapnEceeaTJsa1btya9bmlF75deeqnJsd/97ndNjk2ZMoX169enLWPOnDmdvnK4SFZwhwNvJC/WuPcl8ORxgOT1bWwlKg3HEg0aGU+dRVohziRpP1AHpP4LGQlkGsOzu4X43ZFju1JiNkZiRkQLMLM8YEgz180oHAd1OfCf7l7dXKy7l5nZ34GMo4XdvQpoyBQybZ8hIhKb6sPBWkTRrrPKt5vGFY2N7HF2Fow8BfIKur6+Iu0UW5Lk7tVm9jRwAWELjJnlhK/vyvC2deH5xZFjc8PjEMxm2x3GbAzLLCQYa3R3pIxiM5vu7k+Hx84nWH08fZNA884jSHpaXOTHzAYCJwD/2Y7riIh0PXc4uDV549c9L4HXJcfl9oHR0xqn4JfOgMJRcdRYpMPE3d12O/ALM3sK2EAwM20A4QwxM7sfeMvdF4TxPwEeNbNvAA8BlwBnAl8EcHc3s8XAt81sE41LAOwkTMTc/RUzWwncG86myydIypa5e8PceTM7CSggaGEaZGbTwvdvTPkMVwDrI0sQNDCz24A/EHSxjSZYv6mOYBkD6cbGjRunrjTpmaorYeezjd1mOzbA4X1N4wqPS06IRp0KeX2axol0Y7EmSe6+3MyGAwsJBk1vBOa5e2Lg9ViCWWeJ+LVmdinwA+BmgsUkL0pJUG4lSLTuIZi6vzos82gk5jKCxOgvNC4meXVK9f4EHB95/Wz4taH/y8yKCNZRuibDRywlSIiGAvvCurzb3dP8jyMi0sXcoezN5C09dr8A9SnLueXkw6jTwgHWYVJUdFw8dRbpQqa/hrNb2F1YXl5e3mTq+9GjR9myZQvjx49v2JhVuh99H6XL1ByFXRuTu84OpU4GBgaWJO9xNuo0yNfPpnQ/FRUVFBUVARS5e0Vb3x93d5t0ACW63Zu+f9JpyndE9jhbD7ueh/qUVetz8qDklMYp+GNmQNGYNm9YLdITKUnqxhJbb1RWVtKvX7+YayPtVVlZCTTdXkWkTWqrgiQouqXHO2m2KBowInmPs1HToKD92wqJ9GRKkrqx3NxciouLGzZu7d+/v5YM6EbcncrKSvbu3UtxcTG5udpmQdqgYle44Ws4nmjXRqhLWYXEcqFkavIeZ4PHqZVIpJWUJHVzJSXBIuGpO9xL91FcXNzwfRRJq7Y6GFAdXZeofHvTuP5DG9ckKp0RbALbDfdyFMkWSpK6OTNj1KhRjBgxgpqampbfIFklPz9fLUjS1Dt7khOinc9C7dHkGMuBESdHFmucEWwEq1YikQ6jJKmHyM3N1S9bke6orgb2vNi4JtH29cG0/FT9BievS3TcGdCnV+x/LRIbJUkiIl3p8P7kKfhvPQO1R1KCDEZMaUyIxsyAoRPVSiTSxZQkiYh0lrpa2PtyY0K0fQMc3NI0rm9R0EqUGE903PTgmIjESkmSiEhHqTzQtJWo5nDTuOEnJnedDXsX5OR0fX1FpFlKkkRE2sMdDrwBWx5rTIze3tw0rk9h0DKU2NLjuDOhX3GXV1dE2k5JkohIa1UeCJKiN/4Gr/81/QDroZOS9zgbPhlyNKlCpDtSkiQikkltdTAF//W/BonRzmfB6xvP5+QHydDx5wQJUemZ0H9IfPUVkQ6lJElEJMEd9m9qTIq2PN50TNHwE2HCe+GE84PkqM/AeOoqIp1OSZKI9G6H98Mbj8DrfwsSo4q3ks/3HwYT5gRJ0YQ5UHRcDJUUkTgoSRKR3qW2Ct58orG1aNdzyedz+8DxM8PWovfCyFM080ykl1KSJCI9m3uwVtHr4WDrbWubLt44cmpja9HYmVDQP5aqikh2UZIkIj3PO3vCLrS/Bl8P7U4+P3Bk47iiCXNg0MgYKiki2U5Jkoh0fzVHghaiRFK058Xk83n9YNysxi60ESdpiw8RaZGSJBHpfurrYc8LjV1obz4BdVXJMaNOa2wtGnM25PeNp64i0m0pSRKR7qH8rXARx78FrUWV+5PPFx4XtBJNeG/QhTZgWBy1FJEeREmSiGSnqkOwbU1ja9H+15LP5w+A8e9pbC0aNkldaCLSoZQkiUh2qK+DXRvDpOhvsH091Nc0nrccGH16Y1JUehbkFcRWXRHp+ZQkiUh8yt4MWole/xtseRSOHEw+Xzw2nIH2Xhg/W1t+iEiXUpIkIl3naAVsfbyxC+3A68nn+xQGyVBizaIhE9SFJiKxUZIkIp2nrhZ2PtPYWrTjSfC6xvOWG2wKm2gtOm465Oq/JRHJDrH/b2RmXwGuA0qA54CvuvuGZuIvBm4CxgGbgG+6+58i5w34PvAFoBhYA3zZ3TdFYoYAPwU+BNQDvwWucfdD4fm+wL8B04EpwB/d/aKUeswB/pamiqPcfXckrk2fT6TbO/BGpAvtcagqTz4/ZEKkC+090LconnqKiLQg1iTJzD4B3A5cCawHvgY8bGaT3X1vmvhzgAeBBcAfgUuBFWZ2hrsnVo+7Hrga+CywhSChetjMTnL3o2HMA8AoYC6QDywF7gnLA8gFjgB3Ah9t4WNMBioirxvq3dbPJ9ItHTkIWx5rTIzKtiWf71sME85rTIwGHx9LNUVE2srcPb6Lm60HnnT3q8LXOcB24KfuvihN/HJggLt/MHLsCWCju18ZtiLtBH7s7reF54uAPcB8d19mZlOAl4Gz3P2pMGYe8Ceg1N13plzzPqC4mZakwe5e1hGfL0MZhUB5eXk5hYWFrXmLSOeqqwm6zRJJ0c5nwOsbz+fkBYs3nvBemHA+jJ4GObmxVVdEeq+KigqKiooAity9oqX4VLG1JJlZAUF31i2JY+5eb2argJkZ3jaToGUm6mHgovD5eIJurVWRMsvDZGUmsCz8WpZIkEKrCLrdzgb+u40fZaOZ9QFeBG509zXH8PkIy+oTOTSojfUR6VjusH9T40KOWx+H6kPJMcMmB0nRCefD8bOgz8B46ioi0oHi7G4bRtCttSfl+B7gxAzvKckQXxI5Tytikrq63L3WzA5EYlpjF0E32lMESc3ngUfM7Gx3f4b2fT4IuhK/14Z6iHS8w2/DlkfC1qJHoGJH8vn+QxtnoE2YA0WlXV9HEZFOFvvA7e7K3V8DoksArzWzE4B/Bj59DEXfQnJr2SBgR4ZYkY5RWxUs3pjoQtv1HBDpis8tgLHvbhxXVHIq5OTEVl0Rka4QZ5K0H6gDRqYcHwnsbhoO4fHm4ndHju1KidkYiRkRLcDM8oAhzVy3tTYA54bP2/P5cPcqoGGnTtMaMdIZ3GHvK41daNvWQE1lcsyIk8MutPfC2HOgoH88dRURiUlsSZK7V5vZ08AFwApoGNh8AXBXhretC88vjhybGx6HYDbb7jBmY1hmIcFYo7sjZRSb2XR3fzo8dj6QQzAD7VhMI0zO2vn5RDrPob3BxrCJ1qJDKbn6gBGN44omzIFBbel9FhHpeeLubrsd+IWZPUXQCvM1YADBlHzM7H7gLXdfEMb/BHjUzL4BPARcApwJfBHA3d3MFgPfNrNNNC4BsJMwUXH3V8xsJXCvmV1JsATAXcCy6Mw2MzsJKCBoYRpkZtPC928Mz38tLP8loC/BmKTzgfe39vOJdKqaI7BtbWNr0Z4Xk8/n9Q0GWZ/w3qALbeTJWt1aRCQi1iTJ3Zeb2XBgIcGg6Y3APHdPDHYeSzDrLBG/1swuBX4A3EywmORFkTWSAG4lSETuIVhMcnVY5tFIzGUEidFfaFxM8uqU6v0JiC7o8mz4NfFbpAD4MXAcUAk8D7zP3RsWmGzF5xPpOPX1QSL0Rrjlx7Z1UFeVHFNyamNr0Zh3Q37feOoqItINxLpOkrRM6yRJsyp2NSZFbzwCh/clnx80ujEpGn8eDBweSzVFROLQbddJEpF2qD4MW9c0Jkb7Xk0+nz8Axp3b2IU2fLK60ERE2klJkkg2q68LpuMnxhW9+QTU10QCDEaf3thaVDoD8gpiq66ISE+iJEkk25S9GSREb/wt6EI7cjD5fNHYxqn548+D/kNiqaaISE+nJEkkbkcrYOvqxi60tzcnny8YBONnN7YWDZmgLjQRkS6gJEmkq9XVws5nw8HWfws2i62vbTxvOXDcmY1J0XHTITc/vvqKiPRSSpJEusKBLY1J0RuPQVV58vnB44OE6IT3wrj3QL/iWKopIiKNlCSJdIYjZbDlscbE6ODW5PN9i4LxRIlZaEPGx1FLERFphpIkyV41R4Lp7vU1QReU5QRjcRqeZ3q0JqYjyrDGsUF1NbDjqcak6K2nwesbP0tOXjDzLNFaNPp0yMmN576KiEirKEmS7PW/34MN/y/uWrQgTKbw5KQIYOikSBfaudBnUCw1FBGR9lGSJNlr08PB1xEnBfuMeX348MjzevC6lNep51MfLZxvEw+uD9BvSLAxbKILrXhMR94NERHpYkqSJDuVvxWM47EcuPxh6NuFW7LUN5dgZUi0cBhYAjk5XVdPERHpVEqSJDttWxt8HXVa1yZIECY6SnZERHo7/SaQ7LRtTfD1+Fnx1kNERHotJUmSnRItScefE289RESk11KSJNnn0D7Y/1rwfOzMeOsiIiK9lpIkyT5vhq1II07W5q0iIhIbJUmSfdTVJiIiWUBJkmSfreGg7XEatC0iIvFRkiTZ5chB2PNi8HysWpJERCQ+SpIku7z5BOAwdCIMGhl3bUREpBdTkiTZResjiYhIllCSJNmlYdC2kiQREYmXkiTJHlXvwM6NwXMN2hYRkZgpSZLssX0DeB0Uj4Wi0rhrIyIivVzsSZKZfcXMtprZUTNbb2YzWoi/2MxeDeNfMLMPpJw3M1toZrvM7IiZrTKzSSkxQ8zsATOrMLMyM1tiZgMj5/ua2X1h+bVmtiJNPf7JzP7XzPaF5awzswtTYm40M095vNquG9UbqKtNRESySKxJkpl9Argd+D5wBvAc8LCZjcgQfw7wILAEOB1YAawws6mRsOuBq4ErgbOBw2GZfSMxDwAnA3OBDwKzgXsi53OBI8CdwKoM1Z8N/C/wAWA68DfgD2Z2ekrcS8CoyOPcDOWJBm2LiEgWMXeP7+Jm64En3f2q8HUOsB34qbsvShO/HBjg7h+MHHsC2OjuV5qZATuBH7v7beH5ImAPMN/dl5nZFOBl4Cx3fyqMmQf8CSh1950p17wPKHb3i1rxeV4Clrv7wvD1jcBF7j6t9XelSZmFQHl5eTmFhYXtLSb71RyBRWOhrhq++gwMPSHuGomISDdXUVFBUVERQJG7V7T1/bG1JJlZAUELTENLjbvXh68z7Wo6k6YtOw9H4scDJSlllgPrIzEzgbJEghRaBdQTtDy1S5jgDQIOpJyaZGY7zeyNsItvbAvl9DGzwsQjLLPn2/FUkCANLIEhE+KujYiISKzdbcMIurX2pBzfQ5DopFPSQnxJ5FhzMXujJ929liC5yXTd1rgWGAj8f5Fj64H5wDzgywRJ3ONm1lziswAojzx2HEOduo/EeKRxs8As3rqIiIiQBQO3ewIzuxT4HvBxd29IwNz9z+7+a3d/3t0fJhi/VAx8vJnibgGKIo/eMc2rYTyStiIREZHskBfjtfcDdUDq3hMjgd0Z3rO7hfjdkWO7UmI2RmKSBoabWR4wpJnrZmRmlwD/Dlzs7pkGeQPg7mVm9ndgYjMxVUBVpPy2Vqn7qa0Opv8DHK9x7SIikh1ia0ly92rgaeCCxLFwXM8FwLoMb1sXjQ/NjcRvIUh0omUWEow1SsSsA4rNbHqkjPMJ7sX6tnwGM/sksBT4pLs/1Ir4gcAJJCdwsmsj1B6B/kNh+OS4ayMiIgLE25IEwfT/X5jZU8AG4GvAAILEAzO7H3jL3ReE8T8BHjWzbwAPAZcAZwJfBHB3N7PFwLfNbBNB0nQTwYy3FWHMK2a2ErjXzK4E8oG7gGXRmW1mdhJQQNDCNMjMpoXv3xievxT4BXANsN7MEuOZjoSDxTGz24A/ANuA0QRLHdQRLGMgCYmutrEzNR5JRESyRqxJkrsvN7PhwEKCQdMbgXnunhh4PZZg1lkifm2YnPwAuBnYRDDF/sVIsbcSJFr3EIz/WR2WeTQScxlBYvSXsPzfEqytFPUn4PjI62fDr4nf4l8kuH8/Cx8JvyAYrA3BeKIHgaHAvrAu73b3fRluSe+0NUySxqmrTUREskes6yRJy3r8Okn1dbDoeKh+B770GIw6Le4aiYhID9Ft10kSAWD380GC1KcIRk5tOV5ERKSLKEmSeCXWRxr7bsjJjbcuIiIiEUqSJF4Nm9pqfSQREckuSpIkPvX1jTPbNGhbRESyjJIkic++V+HIQcjvrwHbIiKSdZQkSXwSrUhjZkBufrx1ERERSaEkSeLTsF+butpERCT7KEmSeLhr0LaIiGQ1JUkSj7dfh0N7ILcPHDe95XgREZEupiRJ4pHoais9E/L7xlsXERGRNJQkSTzU1SYiIllOSZLEo2HQ9qx46yEiIpKBkiTpemVvQvl2yMkLpv+LiIhkISVJ0vUSXW2jpkHBgFirIiIikkm7kyQzm2hmF5pZv/C1dVy1pEfbujr4Ok5dbSIikr3anCSZ2VAzWwX8HfgTMCo8tcTMftyRlZMeqmHQtpIkERHJXu1pSboDqAXGApWR48uBeR1RKenB3tkNB14HDMacHXdtREREMsprx3veD1zo7jtSetg2Acd3SK2k50rMais5BfoVx1oVERGR5rSnJWkAyS1ICUOAqmOrjvR46moTEZFuoj1J0uPAZyKv3cxygOuBv3VIraRLrdm8ny//8mn2H+qCHHdrYn0kLSIpIiLZrT3dbdcDfzGzM4EC4FbgZIKWJDUPdEP3rd3K/768hymjCrn6gkmdd6HDb8O+V4LnSpJERCTLtbklyd1fBN4FrAZ+R9D99l/A6e7+esdWT7rC0Zo6IGhR6lRvrgu+Dj8RBgzr3GuJiIgco/a0JOHu5cC/dnBdJCZVtfUAPPtmGZXVtfQvaNePRcu0FYmIiHQj7fptaGZ9gVOBEaS0Rrn77zugXtKFauqCJKm6rp4ntx7kvHcN75wLbdN4JBER6T7as5jkPOBN4Ang98CKyOO/21HeV8xsq5kdNbP1ZtbsZl5mdrGZvRrGv2BmH0g5b2a20Mx2mdkRM1tlZpNSYoaY2QNmVmFmZWa2xMwGRs73NbP7wvJrzWxFhrrMMbNnzKzKzDab2fxj/XxxqA5bkqATu9yOlsPuF4LnakkSEZFuoD2z234K/BoY5e45KY/cthRkZp8Abge+D5wBPAc8bGYjMsSfAzwILAFOJ0zOzGxqJOx64GrgSuBs4HBYZt9IzAMEg83nAh8EZgP3RM7nAkeAO4FVGeoyHniIYEbfNGAx8O9mdmF7P19coknS6k2dlCS9uR68HoZMgMJRLceLiIjErD1J0kjgdnff0wHX/zpwr7svdfeXCRKbSuDyDPHXACvd/Ufu/oq7fwd4BrgKGvaP+xrwA3f/nbs/T7BcwWjgojBmCsHK4J939/Xuvhr4KnCJmY0GcPfD7v5ld78X2J2hLlcCW9z9G2Fd7gJ+A/zzMXy+WCS62wBe3lXBgcPVHX8RdbWJiEg3054k6TfAnGO9sJkVANOJtNS4e334emaGt82kacvOw5H48UBJSpnlwPpIzEygzN2fipSxCqgnaHlqrWbr0s7PF4tES1J+brCC+trXO6E1SYO2RUSkm2nPwO2rgF+b2XuAF4Ca6El3v7OV5Qwj6NZKbZHaA5yY4T0lGeJLIudpRcze6El3rzWzA5GY1shUl0Iz6wcMpu2fDzPrA/SJHBrUhjq1S3XYknT2+KGs3ryfNZv388FTR3fgBQ7DzmeD50qSRESkm2hPkvRJgv3bjhK0KHnknBOM45H2WwB8rysvmGhJmjN5OKs372d1Rw/e3vEk1NdCYSkUj+3YskVERDpJe7rb/pXgl3iRu49z9/GRx4Q2lLMfqCMY4xQ1kszjgHa3EL87cqy5mKSB02aWR7BieKbrtqUuFe5+hPZ9PoBbgKLIo7QNdWqXREvSeyYNJy/H2H7gCG++nW57vnZKbEUybhYkb4osIiKStdqTJBUAy8PxNe3m7tXA08AFiWPhHnAXAOsyvG1dND40NxK/hSABiZZZSDDWKBGzDig2s+mRMs4nuBfr2/ARmq1LOz8f7l7l7hWJB/BOG+rULomWpOL++ZwxdjAAazpyXFLDprYatC0iIt1He5KkXwCf6KDr3w58wcw+G846u5tgm5OlAGZ2v5ndEon/CTDPzL5hZiea2Y3AmcBdAO7uBFPxv21mHzazU4D7gZ0EywXg7q8AK4F7zWyGmc0K37/M3XcmLmRmJ5nZNIIWpiIzmxa+Tvg3YIKZ3RrW5f8CHwfuaO3nywZ19U592GFakJvDrInBdiEd1uVWczTobgONRxIRkW6lPWOScoHrw/WAnqfpwO2vt7Ygd19uZsOBhQQDoTcC8yLLC4wlmHWWiF9rZpcCPwBuBjYBF4X7ySXcSpCI3AMUE+wxN8/dj0ZiLiNIjP4Slv9bgrWVov4EHB95HY48xsK6bDGzfyRIiq4BdhAsK/BwGz5f7KJrJBXk5TBr4lDuWAVrN++nvt7JyTnG7rGdz0BdFQwYAUMnHmNtRUREuk57kqRTaEwYpqacc9ooXF/orgzn5qQ59muCxSwzlefAd8NHppgDwKUt1Gtcc+fDmEcIFrVsLibj58sG1ZE1kvJzczhtTDEDCnI5WFnDy7sqmHpc0bFdILo+ksYjiYhIN9LmJMnd39sZFZF4RFuS8nMNM+PdE4byl1f3smbz/mNPkrZqfSQREeme2jMmSXqQREtSQW4OFrb0JMYlrXn97WMrvK4Gtm8Ino9TkiQiIt1Lq1qSzOy/gPnuXhE+z8jd/6lDaiZdoiZsSSrIa8yXz50UJEkbtrxNVW0dffLatCVfo13PQ81h6DcYhk855rqKiIh0pda2JJXTON6ovIWHdCMNLUmRJGnSiIEMH9SHozX1PLOtrP2Fb1sdfB17DuSo0VJERLqXVrUkufvnzOy7Znabu3+usyslXSd13zYAM2PWCUNZsXEnazbvZ+YJQ9tXuNZHEhGRbqwtf95/DxjYWRWReKRrSQKOfb2k+jrYFq6ZqSRJRES6obYkSZq/3QMlWpIKctMnSc/vKKPiaE2T97Voz0tQVQ4Fg6Dk1GOup4iISFdr60CRNq+DJNmtsbst+UdhdHE/JgwbQL3DE+2Z5Zboaht7NuS2ZzkuERGReLU1Sfq7mR1o7tEptZROUxN2t/XJa/qj0LAUQHu63BKDttXVJiIi3VRb/8T/HprB1qNUp1kCIGHWxGH85xPb2j4uyT0yaPvcY62iiIhILNqaJC1z972dUhOJRWLgdmp3G8DMCUPJMXh932F2lx+lpKhv6wrd/3eofBvy+sHoZndtERERyVpt6W7TeKQeqLmWpKL++ZxSWgy0sctta9jVNuYsyCs41iqKiIjEQrPbernotiTpzArXSGpTktTQ1aatSEREpPtqdZLk7jnqaut5EtuS5KdpSQI4N7JeknsrGhPdYVtiU1sN2hYRke5Le0X0comWpD4ZWpLOOH4wffJy2PtOFZv3Hmq5wINb4J1dkJMPpWd1ZFVFRES6lJKkXi7TOkkJffNzmTF+CNDK1bcTXW3HTYf8fh1SRxERkTgoSerlquuCLrR0A7cTGtdLasWiklvV1SYiIj2DkqRerrnZbQmzTgiSpCfeeJvasHsuo8R4pHEatC0iIt2bkqRerqXuNoCTRhdS3D+fQ1W1PLejmbVEy3dA2TawHBhzdkdXVUREpEspSerlEtuSNNeSlJtjnNOapQAS45FGnQZ9BnVYHUVEROKgJKmXS7Qkpdu7LWpWZCmAjBqm/qurTUREuj8lSb1cTcO2JM2vFZpYL+nZNw9SWV2bPmirkiQREek5lCT1clUtrLidMHZIf44r7kdNnbNhy4GmAYf2wtubAIPjZ3ZCTUVERLqWkqRernF2W26zcWbW0JqUdlxSYjzSyJOh3+AOraOIiEgclCT1cq3tbgOYNSkxLinNeknaikRERHqYrEiSzOwrZrbVzI6a2Xozm9FC/MVm9moY/4KZfSDlvJnZQjPbZWZHzGyVmU1KiRliZg+YWYWZlZnZEjMbmBJzqpk9Hl5nu5ldn3L+ETPzNI+HIjH3pTm/sv13q2O1Zp2khMQMt1d2VbD/UFXySW1qKyIiPUzsSZKZfQK4Hfg+cAbwHPCwmY3IEH8O8CCwBDgdWAGsMLOpkbDrgauBK4GzgcNhmX0jMQ8AJwNzgQ8Cs4F7ItcpBP4H2AZMB64DbjSzL0bK+CdgVOQxFagDfp1S7ZUpcZ9s/q50nYYkqYUxSQDDBvZhyqhCANa9HmlNqjwAe14KnqslSUREeojYkyTg68C97r7U3V8mSGwqgcszxF8DrHT3H7n7K+7+HeAZ4CoIWpGArwE/cPffufvzwGeA0cBFYcwUYB7weXdf7+6rga8Cl5jZ6PA6lwEFwOXu/pK7LwPuDOsLgLsfcPfdiQdBwlVJ0ySpKhrn7gfbe7M6WmvWSYqalW69pDefAByGToKBaXNbERGRbifWJMnMCghaaVYljrl7ffg60xSpmdH40MOR+PFASUqZ5cD6SMxMoMzdn4qUsQqoJ2h5SsQ85u7VKdeZbGaZRiZfASxz98Mpx+eY2V4ze83M7jazoRnej5n1MbPCxAPo1FUZq9rQ3QaN45Ie37Qf92DfN21FIiIiPVHcLUnDgFxgT8rxPQSJTjolLcSXRI41F7M3etLda4EDKTHpyoheo0E4jmoq8O8pp1YStGRdAHwTOA/4s5llmk62ACiPPHZkiOsQ1XUtb0sSNWPcEPJzjbfKjvDmgcrgoBaRFBGRHijuJKknuQJ4wd03RA+6+zJ3/727v+DuKwjGP50FzMlQzi1AUeRR2mk1pu3dbQP65HH62KAhbfXm/VD1Dux6Ljip8UgiItKDxJ0k7ScY6Dwy5fhIYHeG9+xuIX535FhzMUmDZ8wsDxiSEpOujOg1Eu8dAFxCMJi8We7+BsHnnpjhfJW7VyQewDstlXks2jJwO2HWCUGX29rNb8P29eD1UHw8FHVqPiciItKlYk2SwvE+TxN0RQFgZjnh63UZ3rYuGh+aG4nfQpDERMssJBhrlIhZBxSb2fRIGecT3I/1kZjZZpafcp3X0gy8vhjoA/wyQ50bmFkpMBTY1VJsV6ipC8YVtbYlCeDcSeHg7df341vU1SYiIj1T3C1JEEz//4KZfTacdXY3MABYCmBm95vZLZH4nwDzzOwbZnaimd0InAncBeDBaOLFwLfN7MNmdgpwP7CTYLkA3P0VgrFC95rZDDObFb5/mbvvDK/zK6AaWGJmJ4dLFVwT1jfVFcAKd09aZdHMBprZj8zs3WY2zswuAH4HbCYYBB679rQknVpazMA+eZRV1lC5+bHgoAZti4hID5MXdwXcfbmZDQcWEgyI3gjMc/fEIOmxBLPOEvFrzexS4AfAzcAm4CJ3fzFS7K0EidY9QDGwOizzaCTmMoLE6C9h+b8lWFspcZ1yM3s/8DOC1q79wEJ3vydSBmY2GTgXeH+aj1cHnAp8NqzHToK1l77j7lVp4rtcWxaTTMjPzeHdE4bw+Cs76Lt3Y3BQ45FERKSHiT1JAnD3uwhbgtKcm5Pm2K9puhZR9LwD3w0fmWIOAJe2UK/ngfe0EPMakHZPD3c/AlzY3Pvj5O5tnt2WMGviMA6/9jdyvRYGjYLB4zujiiIiIrHJiiRJ4pEYjwRta0mCIEkqs1cBqBt7DrnW8t5vIiIi3Uk2jEmSmCRakQD6tDFJmjRiIOcWvAbA1oHTOrJaIiIiWUFJUi9WU9uYJLW1u83qajiNvwPwyNFJLUSLiIh0P0qSerFES1JujpGb08busp3PUuDVvO2D+P1bnbpzioiISCyUJPViiZlt+bntGE+0bTUAG+pP5IW3yik/UtORVRMREYmdkqReLNGS1JY1khpsWwvA5v6nUe/wxBtvt/AGERGR7kVJUi/WuEZSpr12M6irhTeDhclzw0Uk12ze36F1ExERiZuSpF6scbXtNna37X4eqt+BPkWccMrZQLjZrYiISA+iJKkXq6lr+2rbQENXG8fP5N0njCDH4I19h9lVfqSDaygiIhIfJUm9WHu2JAFgW2JT23Mo6pfPqaXFAKzZrHFJIiLScyhJ6sXatSVJfX2kJelcAGZNHApoXJKIiPQsSpJ6sXa1JO17BY6WQf4AGHUqEGxRAsG4pGDbPBERke5PSVIv1q4lALaGXW1jZkBuPgBnjB1M3/wc9r1Txaa9hzq6miIiIrFQktSLtWvgdmI8Ujj1H6Bvfi5njRsCwOpN6nITEZGeQUlSL9a4BEArfwzcI+ORZiWdSnS5rX1dSZKIiPQMSpJ6scZtSVr5Y/D2Zji8F3L7wOgzkk6dGyZJT7xxoKGFSkREpDtTktSLVdcFg6xb3d2W6GorPQvy+yadOmlUIcX98zlUVcvzO8o6sJYiIiLxUJLUi7V5dtvWxvWRUuXkGLNOCGe5bdJ6SSIi0v0pSerF2tTd5p60iGQ6iXFJWi9JRER6gry4KyAxWHUjVB6gH/8EQJ/WtCSVvQkVb0FOXjD9P43EopLPbj/I4apaBvTRj5eIiHRfaknqjV74DTzzC/KOHgBa2d2WaEUafToUDEgbMnZIf0oH96Omztmw9UBH1VZERCQWSpJ6IzMA6upqAcjPtZbf09DVNitjiJk1zHJbo/WSRESkm1OS1BtZLgC1dXUAFOTmtvyeDOsjpYpuUSIiItKdKUnqjSz4ttfVBi1JLXa3VeyCA28E7xt7drOh55wQjEt6dfc77D9Udex1FRERiUlWJElm9hUz22pmR81svZmlHxncGH+xmb0axr9gZh9IOW9mttDMdpnZETNbZWaTUmKGmNkDZlZhZmVmtsTMBqbEnGpmj4fX2W5m16ecn29mnvI42ta6dLmcoOWovj5oSWqxuy3R1VZyCvQtajZ06MA+TBlVCMDa17UUgIiIdF+xJ0lm9gngduD7wBnAc8DDZjYiQ/w5wIPAEuB0YAWwwsymRsKuB64GrgTOBg6HZUZXQHwAOBmYC3wQmA3cE7lOIfA/wDZgOnAdcKOZfTGlShXAqMjj+JTzralL10ppSWpxdlsrxiNFnRvOctO4JBER6c5iT5KArwP3uvtSd3+ZIJmoBC7PEH8NsNLdf+Tur7j7d4BngKsgaLkBvgb8wN1/5+7PA58BRgMXhTFTgHnA5919vbuvBr4KXGJmo8PrXAYUAJe7+0vuvgy4M6xvlLv77shjT+JEa+oSi3BMUl1iTFKLSVJiPFL69ZFSRccluXv76igiIhKzWJMkMysgaKVZlTjm7vXh65kZ3jYzGh96OBI/HihJKbMcWB+JmQmUuftTkTJWAfUErT2JmMfcvTrlOpPNbHDk2EAz2xZ2x/3OzE6OnGtNXZKYWR8zK0w8gEHp4o5JoiWpPjG7rZkfg8P7Yd+rwfOxrUuSZowfQn6u8VbZEba9XXlMVRUREYlL3C1Jw4BcYE/K8T0EyUU6JS3El0SONRezN3rS3WuBAykx6cqIXuM1ghav/wN8iuB+rjWz0jbUJdUCoDzy2JEhrv1yEt1trdiWJNGKNHwKDBjaquL7F+Rxxtggj9QsNxER6a7iTpK6NXdf5+73u/tGd38U+CdgH/ClYyj2FqAo8ihtPrwdwpak+ta0JCWSpHGtG4+UkOhyW/u6kiQREeme4k6S9gN1wMiU4yOB3Rnes7uF+N2RY83FJA0MN7M8YEhKTLoyotdI4u41wLPAxDbUJbWMKnevSDyAd9LFHRNLnt3WfEtS8/u1ZdKYJL1NXb3GJYmISPcTa5IUjvd5GrggcczMcsLX6zK8bV00PjQ3Er+FIAGJlllIMNYoEbMOKDaz6ZEyzie4H+sjMbPNLD/lOq+5+8F0FTOzXOAUYFcb6tL1Ei1J4cDtPplako6Uwe4XguetnNmWcFppEQP75FFWWcPLOyvaW1MREZHYxN2SBMH0/y+Y2WfDWWd3AwOApQBmdr+Z3RKJ/wkwz8y+YWYnmtmNwJnAXRBMNQMWA982sw+b2SnA/cBOguUCcPdXgJXAvWY2w8xmhe9f5u47w+v8CqgGlpjZyeFSBdeE9SWs23fN7P1mNsHMzgB+SbAEwL+3ti6xaFgnKRiTlJ+pJWn7esBhyAkwKNMQqvTycnN494RgDJPGJYmISHcUe5Lk7suBa4GFwEZgGjAvMpV+LMH6Q4n4tcClwBcJ1lT6GHCRu78YKfZW4KcE6x49CQwMy4wu9HgZ8CrwF+BPwOqwzMR1yoH3E8xQexr4MbDQ3e+JlDEYuBd4JSyjEDgnXMqgLXXpWg0tSeGK25lakrauDr62sastYVZivSQlSSIi0g3lxV0BAHe/i7AlKM25OWmO/Rr4dTPlOfDd8JEp5gBBstVcvZ4H3tPM+X8G/rmFMlqsS5dLLAFQ18Lstlbu15ZJYrPbJ7ce4GhNHX3zW7FHnIiISJaIvSVJYhAmSd7c7LaqQ7BrY/C8jTPbEiaOGMiIQX2oqq3nmW1ph3GJiIhkLSVJvVHDEgBBS1LabUl2bID6WigaA8Vj23cZs4bWJI1LEhGR7kZJUm8UDtxOtCSl7W47xq62hMRSABqXJCIi3Y2SpN4obEnCw9lt6brb2rhfWyaJJOn5t8opr6w5prJERES6kpKk3ihcTDKHYJHHJi1JNUdhR7it3TG2JJUU9eWE4QNwh3VvvH1MZYmIiHQlJUm9UdiSlEOiJcmSz7/1NNRVwcCRMPSEY77cuepyExGRbkhJUm+Uk0iSwpak1O626FYklpJAtYPGJYmISHekJKk3irQkFeTmYKmJUEOSdGxdbQnvPmEoOQZv7D/MW2VHOqRMERGRzqYkqTeKjElq0tVWVwPbNwTPOyhJKuybz6mlxYBak0REpPtQktQbhS1JudQ3HbS9cyPUVEK/wTD8xA67ZGJc0lolSSIi0k0oSeqNwnWSLF2SFO1qy+m4H49ZDYtKvk2wU4uIiEh2U5LUG0VakpqskdRB6yOlOuP4Yvrm57D/UBV/33OoQ8sWERHpDEqSeqPImKSklqT6OnhzXfC8g5OkPnm5zBg/FNAWJSIi0j0oSeqNwtlsidltDfa8CFUVUDAISk7t8MvOOiFIkjQuSUREugMlSb1RToaWpK3heKSx726I6UiJcUlPvPE2NXX1HV6+iIhIR1KS1BtFZ7dFW5Kii0h2gpNGFTK4fz6Hq+t4bntZp1xDRESkoyhJ6o0Si0lapCXJvXHQ9rhzO+WyOTnGOQ2z3NTlJiIi2U1JUm/UMHA7Mrtt36tw5ADk9YNR0zrt0trHTUREugslSb1RdFuSREtSoqttzFmQV9Bpl551QpAkPftmGYerajvtOiIiIsdKSVJvFA7KzsUbxyQ1rI/UOV1tCWOH9mfMkH7U1jsbthzo1GuJiIgcCyVJvVG4BEDDitvujTPbOmnQdtS5GpckIiLdgJKk3sgSLUnh7LYDb8Ch3ZBbAKVndvrlZ2lckoiIdANKknqjhjFJTn6eNY5HOm465Pfr9MvPnBAsKvnq7nfY905Vp19PRESkPZQk9UbhmKQzcv7Op7fcACsXBMe7oKsNYOjAPpw0qhCAta+rNUlERLJTViRJZvYVM9tqZkfNbL2ZzWgh/mIzezWMf8HMPpBy3sxsoZntMrMjZrbKzCalxAwxswfMrMLMysxsiZkNTIk51cweD6+z3cyuTzn/hfD8wfCxKrXuZnafmXnKY2X77lQHCbvbpuW8weTy1VB9CAaOhFMu7rIqnDtJXW4iIpLdYk+SzOwTwO3A94EzgOeAh81sRIb4c4AHgSXA6cAKYIWZTY2EXQ9cDVwJnA0cDsvsG4l5ADgZmAt8EJgN3BO5TiHwP8A2YDpwHXCjmX0xUsacsC7vBWYC24H/MbPjUqq9EhgVeXyy+bvSyd51Ifv6jOXxuqk8PvYr8MVH4euvwogpXVaFxLik1Zv24+5ddl0REZHWsrh/QZnZeuBJd78qfJ1DkGz81N0XpYlfDgxw9w9Gjj0BbHT3K83MgJ3Aj939tvB8EbAHmO/uy8xsCvAycJa7PxXGzAP+BJS6+04z+zLwr0CJu1eHMYuAi9z9xAyfJRc4CFzl7veHx+4Dit39onben0KgvLy8nMLCwvYUkdYNv32eZU9u59r3v4urzp/U8hs6WGV1LdO+/79U19Xzt2vnMH7YgC6vg4iI9GwVFRUUFRUBFLl7RVvfH2tLkpkVELTSrEocc/f68PXMDG+bGY0PPRyJHw+UpJRZDqyPxMwEyhIJUmgVUE/Q8pSIeSyRIEWuM9nMBmeoW38gH0hdAGiOme01s9fM7G4zG5rh/V2mujbYYDZpg9su1L8gj9PHFgNaCkBERLJT3N1tw4BcglaeqD0EiU46JS3El0SONRezN3rS3WsJkptoTLoyotdI9UOCVqxoErcS+AxwAfBN4Dzgz2GrUxNm1sfMChMPYFCGax2T6rogScrPje9HILFe0lolSSIikoXiTpJ6DDO7AbgE+Ii7H00cd/dl7v57d3/B3VcQjH86i2A8UzoLgPLIY0dn1DfuliSAWeHg7bWvv01dvcYliYhIdok7SdoP1AEjU46PBHZneM/uFuJ3R441F5M0MNzM8oAhKTHpyoheI/Hea4EbgPe7+/MZ6g2Au79B8LknZgi5BSiKPEqbK6+9sqEl6dTjihjUJ4/yIzW8tLM8tnqIiIikE2uSFI73eZqgKwpoGLh9AbAuw9vWReNDcyPxWwiSmGiZhQRjjRIx64BiM5seKeN8gvuxPhIz28zyU67zmrsfjJR9PfAdYF7KGKe0zKwUGArsSnfe3avcvSLxAN5pqcz2qAmTpD4xtiTl5ebw7hOC4VkalyQiItkm7pYkCKb/f8HMPhvOOrsbGAAsBTCz+83slkj8T4B5ZvYNMzvRzG4EzgTuAvBgut5i4Ntm9mEzOwW4n2Cs0Iow5hWCsUL3mtkMM5sVvn+Zu+8Mr/MroBpYYmYnh0sVXBPWl7Bu3wRuAi4HtppZSfgYGJ4faGY/MrN3m9k4M7sA+B2wmWAQeGwauttibEkCmBUmSVovSUREsk1e3BVw9+VmNhxYSDAgeiNBq0xikPRYgllnifi1ZnYp8APgZmATwbT8FyPF3kqQaN0DFAOrwzKPRmIuI0iM/hKW/1uCtZUS1yk3s/cDPyNo7doPLHT3eyJlfBkoAH6T8rG+D9xI0JV4KvDZsB47CdZe+o67x7ofR3VdMAYozu42aFxU8smtBzlaU0ff/LTj2UVERLpc7EkSgLvfRdgSlObcnDTHfg38upnyHPhu+MgUcwC4tIV6PQ+8p5nz41p4/xHgwuZi4pINA7cBThg+kJGFfdhTUcXT2w42LDIpIiISt2zobpMYVNfWAfEnSWbWuPq2utxERCSLKEnqpWqypLsNGtdL0rgkEZHeLTGpKFtkRXebdL1Ed1ucs9sSEi1JL7xVTlllNcX9C2KukYiItJe7c6SmjrLKmuBxpJryyhrKjqS8Dp+XVdZQHp4r7JfH+m+9L+6P0EBJUi+VWCcp7u42gJGFfZk4YiCb9x7iiTfeZt7UUXFXSUSk16uvd96pqg0TnOowqamhvLLxeZDgJL+uOFLT8DumzdfMsg3PlST1UjW18S8mGXXuxGFs3nuI1Zv3K0kSEelAtXX1VBytpayyOkxyIklPQytOdSTpCV6XH6nhWDZDyM81ivsXUNwvn+L++RT1K6C4f37j66Rz+RT3K6Cofz7uTrBXffyUJPVSVVnUkgRBl9t9a7eyZvPbcVdFRCQrVdXWJXdbpUl6yo80dl0ljr1ztPaYrtsvP7cxkekfJDNBktP4vLhfyuv++fTLz82aZKe9lCT1Qu6eNYtJJpw9YQg5Blv2H2bHwUpKB/ePu0oiIh3uWMbrHKmpO6ZrD+qbl5zk9EtOfIoaWnkaE5/Cfvm9ev06JUm9UG2k/TRbkqTCvvmcNqaYZ98sY+3mt/n4WUqSRCR7RcfrlB9p/Zid8sr2j9cByDHCxKYgkuCkvE6T9BT2zSMvS/6/706UJPVCiVYkyJ7uNgjGJT37ZhlrXt/Px88aE3d1RKQXiHO8TpMxOs2M2UkkPYP65JGT0727sLoTJUm9UHQdivzc7PnHNmviMH76182s2bw/qwbuiUj2q6qtC8bjpIzZSR2fkw3jdYr65dO/oPuP1+kNlCT1QomWpBwjq5pfTx9bTL/8XPYfqua1Pe9wYklh3FUSkS7UnvE6FUeC85XVxzhep09ekMg06arSeJ3eTElSL1SVJfu2peqTl8tZ44fw2N/3sXrTfiVJIt2Ue2R9nTassdPZ43WiY3aiXVuF/fKzZjkUyS5KknqhV3e/A0DdsXSod5JzJw7lsb/vY83m/Xz+PRPiro5Ir5ZuvE6mMTplka6u8iM1x/T/i8brSLZQktQLfeH+p4DG/duySWKLkvVbDlBTV6+/7kQ6QJzjdYoakpxWjNkJEx+N15FsoSRJssqUkkKGDCjgwOFqNm4v46xxQ+KukkhWcHeO1tSnzLzK0HUV7drSeB2RdlOSJFklJ8c454Sh/PH5XazetF9JkvQ4cY3XscR4nX6pXVUprzVeR6SBkiTJOrMmDuOPz+9izeb9/PPcd8VdHenl3J26eqc28airp6bOqa2vp7bOqa6rb5hhVV7Z+eN18nIsqcUm3Xidwn6NXVeJ1p5BfTVeR6StlCRJ1jk3HJe0cXsZh6pqGdhHP6bdRZBMBMlDbZ1TU19PXb1TUxceq68PE43wWPg88Z6GY2EyklxGeCzynqRjDWU4dfX11CSVER5LU0bDNcK42oa6Nl6jM/TNz0laN0fjdUSyj377SNYZM6Q/Y4f0580DlWzY8jbnnzgy7ip1OHdvaI0IfqmHLRSRloqG5KI++Rd7TfiLveGXfmoZKclItNzUBKPFBCZNshI9X1MXOVZfj2ffXIBOk5dj5OUa+bk5FPbNtB1E+jE7RRqvI9ItKEmSrDRr4jDe3PAmqzfFkyTV1TsVR2qoOFpDxZFayhue10SeJx+vrmtsDWlo+aiPtEpEkpUsXH2h0+TmGHk5QTKRm2Pk5xp5OTkNCUb0fF5u8Dz1fPQ9QXKSQ374NZGs5OXkBHGJY4m4XCM3cS5DGdFrBPHR+qQcywmeqzVHpOdTkiRZ6dyJw3hww5us2by/Xe93dw5X1zUmNUdqqDhaG3meOF4beR5MeS4/UsOhqmOb+tweiRXQ83Oa/pJO/GJPHMvNSfyCjyYajUlCooxEkpAuOcjNNfITxyOJRaZkJZqMJCUwDWVEzkWup2RCRLorJUmSlWaeMBSA1/a8w9PbDmJGUrJT0UKyU3G0tkMWy+xfEKzzUtg3n8J+eZHn4aNvXvg1nz75OeTnRFolWtnKkZcTHNOgWhGR7KIkSbLSkAEFnDy6kJd2VvDRu9e2u5xg5d6miU1Rw/P88Hle5HnwdVDfPE19FhHpxZQkSdb69LuP58Y/vERBbg5F/cNEJ0NSE23liSZAffNz1N0jIiLtoiRJstYlM8ZyyYyxcVdDRER6qazoSzCzr5jZVjM7ambrzWxGC/EXm9mrYfwLZvaBlPNmZgvNbJeZHTGzVWY2KSVmiJk9YGYVZlZmZkvMbGBKzKlm9nh4ne1mdn1n1KWr5Wrsi4iISItiT5LM7BPA7cD3gTOA54CHzWxEhvhzgAeBJcDpwApghZlNjYRdD1wNXAmcDRwOy+wbiXkAOBmYC3wQmA3cE7lOIfA/wDZgOnAdcKOZfbET6tKl7r98BkX98rnr0tPjqoKIiEjWM4959TczWw886e5Xha9zgO3AT919UZr45cAAd/9g5NgTwEZ3v9KCASg7gR+7+23h+SJgDzDf3ZeZ2RTgZeAsd38qjJkH/AkodfedZvZl4F+BEnevDmMWARe5+4kdVZdW3J9CoLy8vJzCwsJW3tWWubvG6oiISI9WUVFBUVERQJG7V7T1/bG2JJlZAUErzarEMXevD1/PzPC2mdH40MOR+PFASUqZ5cD6SMxMoCyRIIVWAfUErT2JmMcSCVLkOpPNbHAH1iWJmfUxs8LEAxiULu5YKUESERFpXtzdbcOAXIKWlag9BMlFOiUtxJdEjjUXszd60t1rgQMpMenKoBUxbalLqgVAeeSxI0OciIiIdKK4kyRp6hagKPIojbc6IiIivVPcSdJ+oA5I3ZxrJLA7w3t2txC/O3KsuZikgeFmlgcMSYlJVwatiGlLXZK4e5W7VyQewDvp4kRERKRzxZokheN9ngYuSBwLB25fAKzL8LZ10fjQ3Ej8FoIEJFpmIcFYo0TMOqDYzKZHyjif4H6sj8TMNrP8lOu85u4HO7AuIiIikoXibkmCYPr/F8zss+Gss7uBAcBSADO738xuicT/BJhnZt8wsxPN7EbgTOAuAA+m6y0Gvm1mHzazU4D7CWaZrQhjXgFWAvea2QwzmxW+f5m77wyv8yugGlhiZieHSxVcE9a3w+oiIiIi2Sn2FbfdfbmZDQcWEgxm3gjMc/fEYOexBLPOEvFrzexS4AfAzcAmgmn5L0aKvZUg0boHKAZWh2UejcRcRpDM/CUs/7cE6xklrlNuZu8HfkbQ2rUfWOju90RiOqouIiIikmViXydJmtdZ6ySJiIj0dN16nSQRERGRbKUkSURERCQNJUkiIiIiacQ+cFtap6KizV2pIiIivdqx/u7UwO0sZ2bHoa1JREREjkWpu7/V1jcpScpyFuxEO5qOXXl7EEHiVdrB5fZmuqcdS/ez4+medizdz47XWfd0ELDT25HwqLsty4Xf1DZnv80J8i4A3mnPlEhpSve0Y+l+djzd046l+9nxOvGetrssDdwWERERSUNJkoiIiEgaSpJ6pyrg++FX6Ri6px1L97Pj6Z52LN3Pjpd191QDt0VERETSUEuSiIiISBpKkkRERETSUJIkIiIikoaSJBEREZE0lCT1Qmb2FTPbamZHzWy9mc2Iu05dzcwWmNmTZvaOme01sxVmNjklpq+Z/czM3jazQ2b2WzMbmRIz1sweMrPKsJwfmVleSswcM3vGzKrMbLOZzU9Tnx71PTGzG8zMzWxx5JjuZxuZ2XFm9svwnh0xsxfM7MzIeTOzhWa2Kzy/yswmpZQxxMweMLMKMyszsyVmNjAl5lQzezy8X9vN7Po0dbnYzF4NY14wsw903ifveGaWa2Y3mdmW8F69bmbfscgKhrqfzTOz2Wb2BzPbGf77vijlfNbcv9bUpVXcXY9e9AA+QTC98nPAScA9wEFgRNx16+L7sBKYD5wMnAY8BGwDBkRi7gbeBM4HpgPrgDWR87nAC8D/AtOAfwD2ATdHYsYDh4EfA1OAq4Ba4MKe+j0BzgK2AM8Bi3U/230fBwNbgaXAjPCzvx84IRLzTaAM+D/AqcDvgDeAvpGYPwMbgbOBc4FNwK8i5wuB3cAvw38PlwCVwBcjMeeE9/m68L7fBFQDU+O+T224n98C9gP/CIwDPkaw9cXVup+tvof/APwA+AjgwEUp57Pm/rWmLq36zHHfdD269gGsB+6KvM4h2PbkhrjrFvN9GR7+o58dvi4K/9F9LBJzYhjz7vD1PwB1wMhIzJVAOVAQvv4h8GLKtZYBK3vi9wQYCPwdeB/wCGGSpPvZrnu5CHi8mfMG7AKujRwrAo4Cl4Svp4T3+MxIzDygHhgdvv4ycCBxjyPXfjXyejnwx5TrPwH8W9z3qQ3384/AkpRjvwV+qfvZrvuZlCRl0/1rTV1a+1B3Wy9iZgUEf8GvShxz9/rw9cy46pUlisKvB8Kv04F8ku/VqwQtIYl7NRN4wd33RMp5mOAvoZMjMatI9nCijB74PfkZ8JC7p35m3c+2+zDwlJn9Oux6fNbMvhA5Px4oIfmzlhMkidF7WubuT0Xet4rgl9LZkZjH3L06EvMwMNnMBkdiMt73bmItcIGZvQvAzE4jaMn4c3he9/PYZNP9a01dWkVJUu8yjKBLY0/K8T0EP1C9kpnlAIsJun5eDA+XANXuXpYSHr1XJaS/l7QiptDM+tGDvidmdglwBrAgzWndz7abQPBX9SbgQoLuyjvN7LPh+cTnae6zlgB7oyfdvZbgj4GOuO/d6Z4uImh1fNXMaoBnCVo6HwjP634em2y6f62pS6vktRwi0uP9DJhK8FeltIOZjQF+Asx196Nx16eHyAGecvdvha+fNbOpBF2Qv4ivWt3Wx4HLgEuBlwjGvS02s53urvspaaklqXfZTzjmI+X4SIKBcr2Omd0FfBB4r7vviJzaDRSYWXHKW6L3ajfp7yWtiKlw9yP0nO/JdGAE8IyZ1ZpZLXAecHX4fA+6n221C3g55dgrwNjweeLzNPdZdxN8XxpYMFtwCB1z37vTPf0RsMjdl7n7C+7+n8AdNLZ86n4em2y6f62pS6soSepFwj7ep4ELEsfCrqYLCGYa9Rrh9NC7CGZpnO/uW1JCngZqSL5Xkwl+QSXu1TrgFDOL/qOfC1TQ+MttXbSMSMw66FHfk78ApxD8dZ54PAU8EHmu+9k2a4DJKcfeRTALE4IZhLtJ/qyFBGM7ove02MymR8o4n+D//vWRmNlmlh+JmQu85u4HIzEZ73s30Z9g7EtUHY2/B3U/j0023b/W1KV14h4hr0fXPgimRx8FPksw0+D/EUyPHhl33br4PvycYHroeQR91IlHv0jM3QS/kN5L0FKyFlgbOZ+Ysv4wwTICFxL0t6ebsn4rwWyu/0v6Kes97ntCZHab7me77t9ZBInlt4CJBN1Eh4HLIjHfDD/bhwmS1BWkn3L9DMEyArMIZh9Gp1wXEfxCuZ9ggPwnwuukTrmuAb4R3vcb6QZT1lPu533ADhqXAPgIwRITP9T9bPU9HEjjH0EO/HP4fGy23b/W1KVVnznum65H1z8I1pbZRrCWzHrg7LjrFMM98AyP+ZGYvgTjlQ6E/0j/CyhJKed44E8E63jsA24D8lJi5hAMEq0CXo9eoyd/T2iaJOl+tv0efpAgcTxK0NX2hZTzBiwMf6kcJZjN866UmCHArwjWBCoH/gMYmBJzKvB4WMYO4Jtp6nIx8Fp4T18EPhD3/WnjvRxEMEFjG3Ak/Nn5AclTzXU/m7+Hc0j//+Z92Xb/WlOX1jwsLExEREREIjQmSURERCQNJUkiIiIiaShJEhEREUlDSZKIiIhIGkqSRERERNJQkiQiIiKShpIkERERkTSUJImIHAMze8TMFsddDwAzm2NmnmaPPBFpByVJIpLVzGymmdWZ2UNx1yWbZFNyJtJTKUkSkWx3BfBTgk0vRzcXGG5cnJfmeEFnVU5Eei4lSSKStcxsIMEGl3cDDwHzU84nupf+wcyeJtjH6dywleUuM1tsZvsJNs3FzL5uZi+Y2WEz225mPw+vgZkNMLMKM/tYyjUuCuMHtbLOfczsNjN7K3zfejObEzk/38zKzOxCM3vFzA6Z2UozGxWJyTOzO8O4t83sh2b2CzNbEZ6/j2Bz5mvCz+9mNi5Sjelm9pSZVZrZWjOb3Jq6i0gyJUkiks0+Drzq7q8BvwQuNzNLE7cIuAGYAjwfHvsswc7gs4Arw2P1wNUEu4t/FjgfuBXA3Q8Dy4DPpZT9OeA37v5OK+t8FzATuIRgo85fAyvNbFIkpj9wLfBpYDYwlmAz34RvApeF154FFAIXRc5fA6wD7gVGhY/tkfP/SrBD+plALcEmoiLSRk2apUVEssgVBMkRwEqgiKAF5ZGUuO+6+/8mXoR51CZ3vz4a5O6LIy+3mtm3gX8D/m947N+BtWY2yt13mdkI4APA+1pTWTMbS5DYjHX3neHh28xsXnj8W+GxfOBKd389fN9dwHcjRX0VuMXd/zs8f1VYj8TnKDezaqDS3XenfG6Af3H3R8Nji4CHzKyvux9tzecQkYBakkQkK4VdRDOABwHcvRZYTpA4pXoqzbGn05T5PjP7S9gV9g7wn8BQM+sfXmMD8BJBKxPAp4BtwGOtrPYpQC7w97Ab7ZCZHSJI7E6IxFUmEqTQLmBEWMciYCSwIXHS3evSfZ5mPB95viv8OqIN7xcR1JIkItnrCoL/o3ZGWkgMqDKzq9y9PBJ7OM37k46FY3b+SDC+6V+AA8C5wBKgAKgMQ/8d+ApBF97ngKXu7q2s80CgDpgefo06FHlek3LOCT5bR4mWn6i7/igWaSP9oxGRrBPOUPsMwbiaaZHHacBO4JPtKHY6wf9533D3J9z970C62XK/BI43s6uBk4BftOEazxK0JI1w980pj90tvRmCrjRgD3BW4piZ5QJnpIRWh9cSkU6iliQRyUYfBAYDS1JajDCz3xK0Mv1bG8vcTDAW6Ktm9geSB3Q3cPeDZvZfwI+A/3H3Ha29gLv/3cweAO43s28QJE3DgQuA5929tWs9/RRYYGabgVcJxigNprFVCGArcHbYQnaIoGVMRDqQWpJEJBtdAaxKTZBCvwXONLNT21Kguz8HfJ1g5tiLBLPHFmQIT3TBtWdW2OeA+4EfA68BKwhahd5sQxk/JBiLdT/BLLZDBMsYRAde30bQpfcysI9ghpyIdCBrfVe7iEjvYGafBu4ARrt7dRbUJwd4Bfj/3P07cddHpLdQd5uISCic5TaKYM2l/xdXgmRmxwPvBx4F+gBXAeOBX8VRH5HeSt1tIiKNricYA7QbuCXGetQTrC7+JLCGYGmB97n7KzHWSaTXUXebiIiISBpqSRIRERFJQ0mSiIiISBpKkkRERETSUJIkIiIikoaSJBEREZE0lCSJiIiIpKEkSURERCQNJUkiIiIiaShJEhEREUnj/wcuhell1UtkhAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%pylab inline\n",
    "\n",
    "plt.figure(dpi=100)\n",
    "plt.plot([10, 100, 1000, 10000, 20000, 50000, 100000], numpy_time)\n",
    "plt.plot([10, 100, 1000, 10000, 20000, 50000, 100000], numexpr_time)\n",
    "plt.legend(['Numpy', 'NumExpr'])\n",
    "plt.xlabel('Array length')\n",
    "plt.ylabel('Time')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "d2430d39-a72a-4853-a0c9-530d03d11c90",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2023-01-09T08:45:37.584832Z",
     "iopub.status.busy": "2023-01-09T08:45:37.584407Z",
     "iopub.status.idle": "2023-01-09T08:45:37.593649Z",
     "shell.execute_reply": "2023-01-09T08:45:37.592959Z",
     "shell.execute_reply.started": "2023-01-09T08:45:37.584784Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9b49abb4-7816-4553-af4a-e88724a33f5c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3.10"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.10"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
